package com.tzstcl.base.service;

import com.github.pagehelper.PageInfo;
import com.tzstcl.base.model.BaseModel;

import java.util.List;

/**
 * 公司：天筑科技股份有限公司
 * 作者：zgq
 * 日期：2018年12月29日
 * 说明：
 */
public interface BaseService<T extends BaseModel> {

    /**
     * 排序分页查询
     *
     * @param var1
     * @return
     */
    PageInfo<T> selectSortPage(T var1);

    /**
     * 分页查询
     *
     * @param var1
     * @return
     */
    PageInfo<T> selectPage(T var1);

    /**
     * 查询
     *
     * @param var1
     * @return
     */
    List<T> selectList(T var1);

    /**
     * 新增
     *
     * @param var1
     * @return
     */
    Integer add(T var1);

    /**
     * 批量新增
     *
     * @param var1
     * @return
     */
    Integer insertBatch(List<T> var1);

    /**
     * 删除记录（通过id）
     *
     * @param id
     * @return
     */
    Integer delete(Long id);

    /**
     * 批量删除(根据ids，例如 ：abc,def,efg,sdfw)
     *
     * @param ids
     * @return
     */
    Integer deleteBatchIds(String ids);

    /**
     * 更新(根据id)
     *
     * @param var1
     * @return
     */
    Integer update(T var1);

    /**
     * 新增或者更新记录（通过model，非空列）
     *
     * @param var1
     * @return
     */
    Integer insertOrUpdate(T var1);

    /**
     * 查询单条model（通过id）
     *
     * @param id 数据id
     * @return
     */
    T getOne(Long id);

    /**
     * 查询单条model（对象）
     *
     * @param var1 数据id
     * @return
     */
    T get(T var1);

}
